using Microsoft.Xna.Framework.Graphics;
using SynapseGaming.LightingSystem.Core;
using SynapseGaming.LightingSystem.Rendering;

namespace Indiefreaks.Xna.Rendering
{
    /// <summary>
    ///   Provides the contract to custom render an entity
    /// </summary>
    public interface IRenderEntity : ISceneEntity
    {
        /// <summary>
        ///   Renders the entity
        /// </summary>
        /// <param name = "sceneState">The current SunBurn SceneState instance</param>
        /// <param name = "graphicsDevice">The GraphicsDevice instance</param>
        void Render(ISceneState sceneState, GraphicsDevice graphicsDevice);

        /// <summary>
        /// Gets or sets if the entity should be rendered
        /// </summary>
        /// <remarks>The renderer will still try to cull this entity and if it isn't in the view frustrum, this property doesn't change anything. It is only used to decide if it should be
        /// rendered whatever the culling result.</remarks>
        bool Show { get; set; }
    }
}